
import logging


logger = logging.getLogger()


class ElasticSearchChanger(object):

    def __init__(self, es, index, doc_type):
        self.es = es
        self.index = index
        self.doc_type = doc_type

    def insert(self, args):
        id_, data = self._build_data(args)
        es_res = self.es.index(index=self.index, doc_type=self.doc_type, id=id_, body=data)
        ret = es_res.get('result', 'Error')
        logger.debug('index=%s, doc_type=%s, id=%s: %s' % (self.index, self.doc_type, id_, ret))
        return {'result': ret}

    def _build_data(self, args):
        """
        创建es搜索语句。
        返回tuple：
        第一个元素为_id
        第二个元素为 data, 数据
        """
        raise NotImplementedError()
